package com.ruoyi.order.service;

import com.ruoyi.order.domain.OmsBillingRecords;
import com.ruoyi.order.vo.QueryBillCriteria;
import com.ruoyi.order.vo.StoreBilling;
import com.ruoyi.util.PageHelper;

import java.math.BigDecimal;
import java.util.List;

/**
 * 账单记录Service接口
 *
 * @author 微信 zhuan237524947
 * @date 2020-07-24
 */
public interface IOmsBillingRecordsService {
    /**
     * 查询账单记录
     *
     * @param id 账单记录ID
     * @return 账单记录
     */
    public OmsBillingRecords selectOmsBillingRecordsById(Long id);

    /**
     * 查询账单记录列表
     *
     * @param omsBillingRecords 账单记录
     * @return 账单记录集合
     */
    public List<OmsBillingRecords> selectOmsBillingRecordsList(OmsBillingRecords omsBillingRecords);

    /**
     * 新增账单记录
     *
     * @param omsBillingRecords 账单记录
     * @return 结果
     */
    public int insertOmsBillingRecords(OmsBillingRecords omsBillingRecords);

    /**
     * 修改账单记录
     *
     * @param omsBillingRecords 账单记录
     * @return 结果
     */
    public int updateOmsBillingRecords(OmsBillingRecords omsBillingRecords);

    /**
     * 批量删除账单记录
     *
     * @param ids 需要删除的账单记录ID
     * @return 结果
     */
    public int deleteOmsBillingRecordsByIds(Long[] ids);

    /**
     * 删除账单记录信息
     *
     * @param id 账单记录ID
     * @return 结果
     */
    public int deleteOmsBillingRecordsById(Long id);

    /**
     * 查询店铺账单
     *
     * @param pageHelper    分页帮助类
     * @param queryCriteria 查询条件
     * @return 返回店铺账单
     */
    PageHelper<StoreBilling> queryStoreBillings(PageHelper<StoreBilling> pageHelper, QueryBillCriteria queryCriteria);


    /**
     * 查询店铺账单的对账记录(对账时候用)
     *
     * @param pageHelper    分页帮助类
     * @param queryCriteria 查询条件
     * @return 返回店铺账单的对账记录
     */
    PageHelper<OmsBillingRecords> queryStoreBillingRecords(PageHelper<OmsBillingRecords> pageHelper, QueryBillCriteria queryCriteria);

    /**
     * 查询一段时间内的收入
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param storeId   店铺id
     * @return 返回一段时间内的收入
     */
    BigDecimal queryStoreInCome(String startTime, String endTime, long storeId);

    /**
     * 查询一段时间内的支出
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param storeId   店铺id
     * @return 返回一段时间内的支出
     */
    BigDecimal queryStoreExpenses(String startTime, String endTime, long storeId);

    /**
     * 查询对账记录（收入支出时候用）
     *
     * @param pageHelper    分页帮助类
     * @param queryCriteria 查询条件
     * @return 返回对账记录
     */
    PageHelper<OmsBillingRecords> queryBillingRecords(PageHelper<OmsBillingRecords> pageHelper, QueryBillCriteria queryCriteria);

    /**
     * 设置店铺账单状态为已结算
     *
     * @param ids 账单记录id
     * @return 成功>0 失败0
     */
    int updateStatus(Long[] ids);
}
